/**
 * [伯努利分布](http://en.wikipedia.org/wiki/Bernoulli_distribution)
 * 是一个离散概率分布，描述了一个随机变量以成功概率 `p` 取值为 1，
 * 以失败概率 `q` = 1 - `p` 取值为 0 的情况。
 * 它可以用于表示抛硬币实验，其中 "1" 表示 "正面"，"0" 表示 "反面"（或反之亦然）。
 * 它是二项分布的一个特例，其中试验次数 `n` = 1。
 *
 * @param {number} p 输入值，范围在 0 到 1 之间（包含 0 和 1）
 * @returns {number[]} 在该点的伯努利分布值
 * @throws {Error} 如果 `p` 不在 0 到 1 之间
 * @example
 * bernoulliDistribution(0.3); // => [0.7, 0.3]
 */
function bernoulliDistribution(p) /*: number[] */ {
    // 检查 `p` 是否为有效概率（0 ≤ p ≤ 1）
    if (p < 0 || p > 1) {
        throw new Error(
            "bernoulliDistribution 要求概率值必须在 0 和 1 之间（包含 0 和 1）"
        );
    }

    return [1 - p, p];
}

export default bernoulliDistribution;
